package exporter

import (
	"os"
	"path/filepath"
	"strings"

	"excel-exporter/config"
	"excel-exporter/types"
)

// saveSheetFiles 保存子表文件
func saveSheetFiles(exportConfig *types.ExportConfig, sheetConfig *types.Sheet, result *types.ExportResult) error {
	// 保存服务端文件
	serverFiles := map[string]string{
		sheetConfig.ServerFileName + ".json": result.ServerJSON,
		sheetConfig.ServerFileName + ".lua":  result.ServerLua,
	}

	for filename, content := range serverFiles {
		// 确定文件类型和子目录
		subDir := getFileSubDir(filename)
		filePath := config.GetServerOutputPath(exportConfig, filename, subDir)
		
		// 确保目录存在
		if err := os.MkdirAll(filepath.Dir(filePath), 0755); err != nil {
			return err
		}
		if err := os.WriteFile(filePath, []byte(content), 0644); err != nil {
			return err
		}
	}

	// 保存客户端文件
	clientFiles := map[string]string{
		sheetConfig.ClientFileName + ".json": result.ClientJSON,
		sheetConfig.ClientFileName + ".lua":  result.ClientLua,
	}

	for filename, content := range clientFiles {
		// 确定文件类型和子目录
		subDir := getFileSubDir(filename)
		filePath := config.GetClientOutputPath(exportConfig, filename, subDir)
		
		// 确保目录存在
		if err := os.MkdirAll(filepath.Dir(filePath), 0755); err != nil {
			return err
		}
		if err := os.WriteFile(filePath, []byte(content), 0644); err != nil {
			return err
		}
	}

	return nil
}

// getFileSubDir 根据文件扩展名确定子目录
func getFileSubDir(filename string) string {
	ext := strings.ToLower(filepath.Ext(filename))
	switch ext {
	case ".json":
		return "json"
	case ".lua":
		return "lua"
	default:
		return "other"
	}
}